package pe.gob.minam.sismon.core.dao.impl;

import java.util.List;

import javax.persistence.Query;

import org.springframework.stereotype.Repository;

import pe.gob.minam.sismon.core.base.dao.impl.BaseDaoImpl;
import pe.gob.minam.sismon.core.dao.GnrSistemaDao;
import pe.gob.minam.sismon.core.domain.GnrSistema;
import pe.gob.minam.sismon.core.util.ExceptionCore;
import static pe.gob.minam.sismon.core.util.UtilCore.*;

@Repository("gnrSistemaDao")
public class GnrSistemaDaoImpl extends BaseDaoImpl<GnrSistema> implements
		GnrSistemaDao {

	@SuppressWarnings("unchecked")
	@Override
	public List<GnrSistema> listarSistemas(String codigo, String siglas,
			String nombre) throws ExceptionCore {
		StringBuilder sql = new StringBuilder();
		sql.append(" SELECT g FROM GnrSistema g where 1=1 ");

		establecerCondicion(sql, " AND g.codigo LIKE :codigo", codigo);
		establecerCondicion(sql, " AND g.siglas LIKE :siglas", siglas);
		establecerCondicion(sql, " AND g.nombre LIKE :nombre", nombre);

		Query query = getEntityManager().createQuery(sql.toString());

		establecerParam(query, "codigo", codigo, true, false);
		establecerParam(query, "siglas", siglas, true, false);
		establecerParam(query, "nombre", nombre, true, false);

		return (List<GnrSistema>) query.getResultList();
	}

}
